devenv ecosystem

安装量: 46
排名: #16226

安装

npx skills add https://github.com/takeokunn/nixos-configuration --skill 'Devenv Ecosystem'

Specify language version (available for some languages) languages.python.version = "3.11.3"; languages.ruby.version = "3.2.1"; languages.rust.channel = "stable"; Use custom package instead of default languages.go.package = pkgs.go_1_21; languages.java.jdk.package = pkgs.jdk17; Read version from file (Ruby, Python) languages.ruby.versionFile = "./.ruby-version"; languages.python.versionFile = "./.python-version"; Configure LSP, debugger, linter, formatter (devenv 1.8+) languages.rust.dev = { lsp.enable = true; debugger.enable = true; linter.enable = true; formatter.enable = true; }; languages.rust = { enable = true; channel = "stable"; # or "nightly", "beta" components = [ "rustc" "cargo" "clippy" "rustfmt" "rust-analyzer" ]; targets = [ "wasm32-unknown-unknown" ]; }; outputs.rust-app = config.languages.rust.import ./rust-app {}; languages.go = { enable = true; package = pkgs.go_1_22; }; outputs.go-app = config.languages.go.import ./go-app {}; languages.c.enable = true; languages.cplusplus.enable = true; languages.zig = { enable = true; package = pkgs.zig; zls.package = pkgs.zls; }; languages.nim = { enable = true; package = pkgs.nim; }; languages.odin = { enable = true; package = pkgs.odin; }; languages.v = { enable = true; package = pkgs.vlang; }; languages.python = { enable = true; version = "3.12"; uv.enable = true; uv.sync.enable = true; }; languages.python = { enable = true; poetry = { enable = true; install.enable = true; install.allExtras = true; }; }; outputs.python-app = config.languages.python.import ./python-app {}; languages.ruby = { enable = true; version = "3.3.0"; bundler.enable = true; }; languages.php = { enable = true; package = pkgs.php83; extensions = [ "opcache" "redis" ]; }; languages.perl.enable = true; languages.lua.enable = true; languages.java = { enable = true; jdk.package = pkgs.jdk21; maven.enable = true; gradle.enable = true; }; languages.kotlin.enable = true; languages.scala = { enable = true; package = pkgs.scala_3; sbt.enable = true; }; languages.clojure.enable = true; languages.haskell = { enable = true; languageServer = pkgs.haskell-language-server; stack = { enable = true; args = [ "--no-nix" "--system-ghc" "--no-install-ghc" ]; }; }; languages.ocaml = { enable = true; packages = pkgs.ocaml-ng.ocamlPackages_5_1; }; languages.elixir.enable = true; languages.erlang.enable = true; languages.elm.enable = true; languages.purescript = { enable = true; package = pkgs.purescript; }; languages.gleam.enable = true; languages.idris = { enable = true; package = pkgs.idris2; }; languages.lean4 = { enable = true; package = pkgs.lean4; }; languages.unison.enable = true; languages.javascript = { enable = true; package = pkgs.nodejs_22; npm.enable = true; npm.install.enable = true; }; languages.javascript = { enable = true; pnpm.enable = true; pnpm.install.enable = true; }; languages.javascript = { enable = true; bun.enable = true; bun.install.enable = true; }; languages.javascript = { enable = true; yarn.enable = true; yarn.install.enable = true; }; languages.javascript = { enable = true; corepack.enable = true; }; languages.typescript.enable = true; languages.deno.enable = true; languages.nix = { enable = true; lsp.package = pkgs.nil; # or pkgs.nixd }; languages.swift.enable = true; languages.crystal.enable = true; languages.dart.enable = true; languages.r.enable = true; languages.julia.enable = true; languages.fortran.enable = true; languages.pascal = { enable = true; lazarus.enable = true; }; languages.raku.enable = true; languages.racket.enable = true; languages.standardml.enable = true; languages.solidity = { enable = true; package = pkgs.solc; }; languages.terraform.enable = true; languages.opentofu.enable = true; languages.ansible = { enable = true; package = pkgs.ansible; }; languages.helm = { enable = true; languageServer.enable = true; }; languages.cue = { enable = true; package = pkgs.cue; }; languages.jsonnet.enable = true; languages.typst = { enable = true; fontPaths = [ "${pkgs.roboto}/share/fonts/truetype" ]; }; languages.texlive.enable = true; languages.gawk.enable = true; languages.shell.enable = true; languages.robotframework.enable = true; languages.vala.enable = true; languages.dotnet.enable = true; What type of project are you building? Use Rust, Go, Zig, or C/C++ Use JavaScript/TypeScript, Python, Ruby, Go, or Rust Use JavaScript/TypeScript with npm/pnpm/bun Use Python with uv or poetry Use Haskell, OCaml, Elixir, or Gleam Use Java, Kotlin, or Scala with gradle/maven/sbt Use Terraform, OpenTofu, Ansible, or Nix Which JavaScript/TypeScript package manager to use? Match existing lock file (package-lock.json=npm, pnpm-lock.yaml=pnpm, yarn.lock=yarn, bun.lockb=bun) Use pnpm or bun Use npm (most widely supported) Use pnpm or yarn with workspaces Use corepack.enable with packageManager in package.json Should you use devenv or pure Nix flakes? Use devenv - services. is simpler Use devenv - git-hooks integration built-in Use devenv - process-compose integration Use devenv - languages. handles versions Use flakes - devenv adds overhead Use flakes - devenv is for dev environments services.mysql = { enable = true; package = pkgs.mysql80; initialDatabases = [{ name = "myapp"; }]; }; services.mongodb = { enable = true; }; services.redis = { enable = true; port = 6379; }; services.memcached = { enable = true; }; services.minio = { enable = true; }; services.elasticsearch = { enable = true; }; services.opensearch = { enable = true; }; services.kafka = { enable = true; }; services.caddy = { enable = true; }; services.varnish = { enable = true; vcl = '' vcl 4.0; backend default { .host = "127.0.0.1"; .port = "8080"; } ''; }; services.mailpit.enable = true; What type of storage/service do you need? Use postgres or mysql Use mongodb Use redis or memcached Use minio Use elasticsearch or opensearch Use rabbitmq or kafka Use nginx or caddy Use mailhog or mailpit

Linters

eslint.enable = true; clippy.enable = true; shellcheck.enable = true;

Security

detect-private-keys.enable = true; check-merge-conflicts.enable = true;

Git hygiene

check-case-conflicts.enable = true; editorconfig-checker.enable = true; }; git-hooks.hooks.my-custom-hook = { enable = true; name = "my-custom-hook"; entry = "${pkgs.bash}/bin/bash -c 'echo Running custom hook'"; files = "\.nix$"; pass_filenames = true; }; Nix code formatter (RFC style) JavaScript/TypeScript/CSS/HTML formatter Python code formatter Rust code formatter Haskell code formatter Go code formatter JavaScript/TypeScript linter Rust linter Shell script linter YAML linter GitHub Actions linter Dockerfile linter Markdown linter Prevent committing private keys Prevent committing merge conflicts Detect case conflicts in filenames Check editorconfig compliance Universal formatter via treefmt

With description

deploy = { exec = "kubectl apply -f k8s/"; description = "Deploy to Kubernetes"; };

Using packages

migrate = { exec = "${pkgs.dbmate}/bin/dbmate up"; description = "Run database migrations"; }; }; processes = { web = { exec = "npm run dev"; process-compose = { depends_on.api.condition = "process_healthy"; readiness_probe = { http_get = { host = "localhost"; port = 3000; }; }; }; }; api = { exec = "cargo run"; process-compose = { readiness_probe = { http_get = { host = "localhost"; port = 8080; path = "/health"; }; }; }; }; }; dotenv.enable = true; dotenv.filename = ".env.local"; outputs = { rust-app = config.languages.rust.import ./rust-app {}; python-app = config.languages.python.import ./python-app {}; go-app = config.languages.go.import ./go-app {}; }; } profiles = { "python-3.11".config = { languages.python.version = "3.11"; }; "python-3.10".config = { languages.python.version = "3.10"; }; }; } devenv shell --profile python-3.11 profiles = { backend.module = { languages.rust.enable = true; services.postgres.enable = true; services.redis.enable = true; }; frontend.module = { languages.javascript.enable = true; languages.typescript.enable = true; }; fullstack.extends = [ "backend" "frontend" ]; }; } user."developer".module = { packages = [ pkgs.gh ]; }; }; } languages = { javascript = { enable = true; package = pkgs.nodejs_22; pnpm.enable = true; }; typescript.enable = true; }; services = { postgres = { enable = true; initialDatabases = [{ name = "app_dev"; }]; }; redis.enable = true; }; processes = { frontend.exec = "pnpm dev"; api.exec = "pnpm api:dev"; }; scripts = { db-migrate.exec = "pnpm db:migrate"; db-seed.exec = "pnpm db:seed"; }; git-hooks.hooks = { prettier.enable = true; eslint.enable = true; }; } packages = [ pkgs.nixfmt-rfc-style ]; git-hooks.hooks = { nixfmt-rfc-style.enable = true; editorconfig-checker.enable = true; }; } What type of project are you setting up? Use minimal_config pattern Use full_stack pattern Use nix_project pattern Use profiles with team modules

Hardcoding specific package versions instead of using version options Use languages. .version or languages. .package with nixpkgs packages

Use languages.*.enable instead of adding language packages directly to packages list /cachix/devenv 9.7 1354 Fetch specific language configuration options Fetch service configuration details Fetch available pre-commit hooks Fetch packaging patterns Fetch profile configuration (1.9+)

Missing optional configuration attribute Note in output, suggest improvement

Service configuration incomplete or enterShell too slow Document issue, suggest refactoring approach

Configuration fails to evaluate or services fail to start Debug with devenv info, present options to user

Security issue in configuration (secrets exposed, unsafe permissions) Block operation, require explicit user acknowledgment

Finding existing devenv configurations and patterns Evaluating devenv architecture and service dependencies Reviewing devenv configuration for security issues Nix language fundamentals, flakes, Home Manager (devenv uses Nix) Symbol operations for navigating devenv configurations Fetch latest devenv documentation

返回排行榜